package uade.distribuidas.server.domain;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;

import uade.distribuidas.repo.dto.MercaderiaDTO;
import uade.distribuidas.repo.dto.RemitoODVDTO;
import uade.distribuidas.repo.type.EstadoRemitoType;
/**
 * 
 */
@Entity
@DiscriminatorValue("odv")
public class RemitoODV extends Remito {
	
	

	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idcliente")
	private Cliente cliente;
	
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idOrdenPedido")
	private OrdenPedido orden;
	
	@Enumerated(EnumType.STRING)
	private EstadoRemitoType estado;
	
	public RemitoODV() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public OrdenPedido getOrden() {
		return orden;
	}
	public void setOrden(OrdenPedido orden) {
		this.orden = orden;
	}
	public EstadoRemitoType getEstado() {
		return estado;
	}
	public void setEstado(EstadoRemitoType estado) {
		this.estado = estado;
	}
    
	
	
    public RemitoODVDTO getVista(){
    	RemitoODVDTO dto = new RemitoODVDTO();
    	dto.setConformidad(this.getConformidad());
    	dto.setEmision(this.getEmision());
    	dto.setId(this.getId());
    	dto.setNumero(this.getNumero());
    	dto.setOrden(this.getOrden().getVista());
    	List<MercaderiaDTO> ventas=new ArrayList<MercaderiaDTO>();
    	for(Mercaderia c:this.getItems()){
    		ventas.add(c.getVista());
    	}
    	dto.setItems(ventas);
    	dto.setCliente(this.getCliente().getVista());
    	dto.setEstado(estado);
    	return dto;
    }
    
}
